// 递归   通过递归，可以一直处理下面的层级
// export function transListToTree(list, rootPid) {
//   const arr = []
//   list.forEach(item => {
//     if (item.pid === rootPid) {
//       const children = transListToTree(list, item.id)
//       item.children = children
//       arr.push(item)
//     }
//   })
//   return arr
// }

// 第二种方法 两遍for循环
export function transListToTree(list, rootPid) {
  const arr = [];
  const map = {};
  list.forEach((item) => {
    map[item.id] = item;
  });
  list.forEach((item) => {
    // item.pid === item.id    item.pid是自己   map[item.pid]是在map字典中找有没有父亲，找到的话map[item.pid]就是父亲那一项，再挂载到children上
    if (map[item.parentId]) {
      if (map[item.parentId].children) {
        map[item.parentId].children.push(item);
      } else {
        //   第一次遍历的时候都是没有children属性的，因为后端返回的数据里面都没有这个属性
        map[item.parentId].children = [item];
      }
    } else if (item.parentId === rootPid) {
      arr.push(item);
    }
  });
  // console.log(map)
  return arr;
}
